package com.ai.fupincore.service.onest.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ai.frame.bean.InputObject;
import com.ai.frame.bean.OutputObject;
import com.ai.frame.logger.Logger;
import com.ai.frame.logger.LoggerFactory;
import com.ai.fupincore.service.common.impl.BaseServiceImpl;
import com.ai.fupincore.service.onest.IOnestService;
import com.ai.fupincore.util.DedicException;
import com.ai.fupincore.util.StringUtil;

public class OnestServiceImpl extends BaseServiceImpl implements IOnestService {
	
	private static final Logger LOGGER = LoggerFactory.getApplicationLog(OnestServiceImpl.class);
	/**
	 * 
	 * @Title updateTableData
	 * @Description: 更新表数据
	 * @param: @param inputObject
	 * @param: @param outputObject
	 * @param: @throws DedicException
	 * @return void
	 * @throws
	 * @author zzx
	 * @Date 2018年9月28日   上午10:11:34
	 */
	public void updateTableData(InputObject inputObject, OutputObject outputObject) throws DedicException{
		LOGGER.info("*******updateTableData*******更新表数据******", "** 开始***********");
		/*List<Map<String,String>> list = getBaseDao().queryForList("User.queryNewprojList", null);
		for(Map<String,String> m : list){
			System.err.println("***"+m.toString());
		}*/
		getBaseDao().update("User.updateTableData", inputObject.getParams());
		LOGGER.info("*******updateTableData*******更新表数据******", "** 结束***********");
	}
	/**
	 * 
	 * @Title queryFileList
	 * @Description: 查询需要更新的图片地址。
	 * @param: @param inputObject
	 * @param: @param outputObject
	 * @param: @throws DedicException
	 * @return void
	 * @throws
	 * @author zzx
	 * @Date 2018年9月28日   上午10:11:34
	 */
	public void queryFileList(InputObject inputObject, OutputObject outputObject) throws DedicException{
		LOGGER.info("**********queryFileList****查询需要更新的图片地址******", "** 开始***********");
		List<Map<String,String>> list = getBaseDao().queryForList("User.queryFileList", inputObject.getParams());
		/*for(Map<String,String> m : list){
			System.err.println("***"+m.toString());
		}*/
		//getBaseDao().update("User.updateTableData", inputObject.getParams());*/
		outputObject.setBeans(list);
		LOGGER.info("*************queryFileList****查询需要更新的图片地址******", "** 结束***********");
	}
	/**
	 * 
	 * @Title queryFileListCount
	 * @Description: 查询需要更新的图片地址数据数量。
	 * @param: @param inputObject
	 * @param: @param outputObject
	 * @param: @throws DedicException
	 * @return void
	 * @throws
	 * @author zzx
	 * @Date 2018年9月28日   上午10:11:34
	 */
	public void queryFileListCount(InputObject inputObject, OutputObject outputObject) throws DedicException{
		int count = getBaseDao().getTotalCount("User.queryFileListCount", inputObject.getParams());
		Map<String,String> m = new HashMap<String,String>();
		m.put("total", Integer.toString(count));
		outputObject.setBean(m);
	}
	/**
	 * 
	 * @Title queryTbConfList
	 * @Description: 获取需要改造的配置表信息。表名、字段名称
	 * @param: @param inputObject
	 * @param: @param outputObject
	 * @param: @throws DedicException
	 * @return void
	 * @throws
	 * @author zzx
	 * @Date 2018年9月28日   上午10:11:34
	 */
	public void queryTbConfList(InputObject inputObject, OutputObject outputObject) throws DedicException{
		List<Map<String,String>> list = getBaseDao().queryForList("User.queryTbConfList", inputObject.getParams());
		outputObject.setBeans(list);
	}
	/**
	 * 
	 * @Title saveErrorDtl
	 * @Description: 异常数据记录  
	 * @param: @param inputObject
	 * @param: @param outputObject
	 * @param: @throws DedicException
	 * @return void
	 * @throws
	 * @author zzx
	 * @Date 2018年9月28日   上午10:11:34
	 */
	public void saveErrorDtl(InputObject inputObject, OutputObject outputObject) throws DedicException{
		String dtlId = getSequence("t_pt_lj_proj");
		inputObject.getParams().put("dtlId", dtlId);
		getBaseDao().insert("User.saveErrorDtl", inputObject.getParams());
		//outputObject.setBeans(list);
	}
	/**
	 * 
	 * @Title updateConfInfo
	 * @Description: 更新配置表状态
	 * @param: @param inputObject
	 * @param: @param outputObject
	 * @param: @throws DedicException
	 * @return void
	 * @throws
	 * @author zzx
	 * @Date 2018年9月28日   上午10:11:34
	 */
	public void updateConfInfo(InputObject inputObject, OutputObject outputObject) throws DedicException{
		getBaseDao().update("User.updateConfInfo", inputObject.getParams());
	}
	/**
	 * 
	 * @Title queryTbErrorConfList
	 * @Description:异常数据列表，准备二次上传
	 * @param: @param inputObject
	 * @param: @param outputObject
	 * @param: @throws DedicException
	 * @return void
	 * @throws
	 * @author zzx
	 * @Date 2018年9月28日   上午10:11:34
	 */
	public void queryTbErrorConfList(InputObject inputObject, OutputObject outputObject) throws DedicException{
		List<Map<String,String>> list = getBaseDao().queryForList("User.queryTbErrorConfList", inputObject.getParams());
		outputObject.setBeans(list);
	}
	/**
	 * 
	 * @Title queryTbErrorConfListCount
	 * @Description:异常数据统计
	 * @param: @param inputObject
	 * @param: @param outputObject
	 * @param: @throws DedicException
	 * @return void
	 * @throws
	 * @author zzx
	 * @Date 2018年9月28日   上午10:11:34
	 */
	public void queryTbErrorConfListCount(InputObject inputObject, OutputObject outputObject) throws DedicException{
		int count = getBaseDao().getTotalCount("User.queryTbErrorConfListCount", inputObject.getParams());
		Map<String,String> m = new HashMap<String,String>();
		m.put("total", Integer.toString(count));
		outputObject.setBean(m);
	}
	/**
	 * 
	 * @Title delErrorDateInfo
	 * @Description:删除异常数据（二次上传成功)
	 * @param: @param inputObject
	 * @param: @param outputObject
	 * @param: @throws DedicException
	 * @return void
	 * @throws
	 * @author zzx
	 * @Date 2018年9月28日   上午10:11:34
	 */
	public void delErrorDateInfo(InputObject inputObject, OutputObject outputObject) throws DedicException{
		getBaseDao().delete("User.delErrorDateInfo", inputObject.getParams());
	}
	/**
	 * 
	 * @Title checkTableIsExist
	 * @Description:判断表是否存在
	 * @param: @param inputObject
	 * @param: @param outputObject
	 * @param: @throws DedicException
	 * @return void
	 * @throws
	 * @author zzx
	 * @Date 2018年9月28日   上午10:11:34
	 */
	public void checkTableIsExist(Map<String,String> params, OutputObject outputObject) throws DedicException{
		@SuppressWarnings("unchecked")
		Map<String,String> map = (Map<String, String>) getBaseDao().queryForObject("User.checkTableIsExist", params);
	    String flag = "0";
		if(map != null && !map.isEmpty()){
			flag = "1";
		}
		Map<String,String> rtnMap = new HashMap<>();
		rtnMap.put("flag", flag);
		outputObject.setBean(rtnMap);
	}
	/**
	 * 
	 * @Title delErrorConfList
	 * @Description:删除错误数据表数据
	 * @param: @param inputObject
	 * @param: @param outputObject
	 * @param: @throws DedicException
	 * @return void
	 * @throws
	 * @author zzx
	 * @Date 2018年9月28日   上午10:11:34
	 */
	public void delErrorConfList(Map<String,String> map) throws DedicException{
		getBaseDao().delete("User.delErrorConfList", map);
	}
	/**
	 * 
	 * @Title insertOnestDataInfo
	 * @Description:更新到ONEST 的数据插入临时表
	 * @param: @param inputObject
	 * @param: @param outputObject
	 * @param: @throws DedicException
	 * @return void
	 * @throws
	 * @author zzx
	 * @Date 2018年9月28日   上午10:11:34
	 */
	public void insertOnestDataInfo(InputObject inputObject) throws DedicException{
		String str = inputObject.getParams().get("fileList");
		String tabNm = inputObject.getParams().get("tableNameTemp");
		String onestTempId = getSequence(tabNm);		
		if(StringUtil.isNotEmpty(str)){
			List<Object> list = com.alibaba.fastjson.JSONObject.parseArray(str);
			List<Map<String,String>> paramList = new ArrayList<>();
			if(!list.isEmpty()){
				for(int i=0;i<list.size();i++){	
					@SuppressWarnings("unchecked")
					Map<String,String> map = (Map<String, String>) list.get(i);
					StringBuilder stb = new StringBuilder();
					stb.append(onestTempId).append(StringUtil.createRandom(true, 2)).append(""+i);
					map.put("onestTempId", stb.toString());	
					paramList.add(map);
				}
			}	
			//inputObject.getParams().put("fileList",com.alibaba.fastjson.JSONObject.toJSONString(list));
			Map<String,Object> map = new HashMap<>();
			map.put("tableTmpName",tabNm);
			map.put("fileList",paramList);
			getBaseDao().insert("User.insertOnestDataInfo", map);
		}
	}
}
